using System;
using System.Collections.Generic;
using System.Text;

 
    public delegate TResult MyFunc<TResult>();
    public delegate TResult MyFunc<T, TResult>(T t);
    public delegate TResult MyFunc<T, T1, TResult>(T t, T1 t1);
    public delegate TResult MyFunc<T, T1, T2, TResult>(T t, T1 t1, T2 t2);
    public delegate TResult MyFunc<T, T1, T2, T3, TResult>(T t, T1 t1, T2 t2, T3 t3);
    public delegate TResult MyFunc<T, T1, T2, T3, T4, TResult>(T t, T1 t1, T2 t2, T3 t3, T4 t4);


    public delegate void MyAction();
    public delegate void MyAction<T>(T t);
    public delegate void MyAction<T, T1>(T t, T1 t1);
    public delegate void MyAction<T, T1, T2>(T t, T1 t1, T2 t2);
    public delegate void MyAction<T, T1, T2, T3>(T t, T1 t1, T2 t2, T3 t3);
    public delegate void MyAction<T, T1, T2, T3, T4>(T t, T1 t1, T2 t2, T3 t3, T4 t4);
 